package componentes;

import java.util.ArrayList;
import java.util.List;

import model.Bet;

public class BetsListsHelper {

	private List<Bet> bets;

	public <T extends Enum<T>> List<Bet> query(EnumSetAndBetFilterPair<T> enumAndFilterPair){
		List<Bet> betsResults = new ArrayList<Bet>();

		for (Bet bet : bets) {
			boolean isContainInAll = true;
			isContainInAll &= enumAndFilterPair.getBetFilter()
					.isContain(bet, enumAndFilterPair.getEnumSet());
			if (isContainInAll){ 
				betsResults.add(bet);
			}
		}
		return betsResults;
	}
	
	public <T extends Enum<T>, G extends Enum<G>> List<Bet> query(EnumSetAndBetFilterPair<T> enumAndFilterPair1, EnumSetAndBetFilterPair<G> enumAndFilterPair2){
		List<Bet> betsResults = new ArrayList<Bet>();

		for (Bet bet : bets) {
			boolean isContainInAll = true;
			isContainInAll &= enumAndFilterPair1.getBetFilter()
					.isContain(bet, enumAndFilterPair1.getEnumSet());
			isContainInAll &= enumAndFilterPair2.getBetFilter()
					.isContain(bet, enumAndFilterPair2.getEnumSet());
			if (isContainInAll){ 
				betsResults.add(bet);
			}
		}
		return betsResults;
	}
	
	public <T extends Enum<T>, G extends Enum<G>, H extends Enum<H>> List<Bet> query(EnumSetAndBetFilterPair<T> enumAndFilterPair1, EnumSetAndBetFilterPair<G> enumAndFilterPair2, EnumSetAndBetFilterPair<G> enumAndFilterPair3){
		List<Bet> betsResults = new ArrayList<Bet>();

		for (Bet bet : bets) {
			boolean isContainInAll = true;
			isContainInAll &= enumAndFilterPair1.getBetFilter()
					.isContain(bet, enumAndFilterPair1.getEnumSet());
			isContainInAll &= enumAndFilterPair2.getBetFilter()
					.isContain(bet, enumAndFilterPair2.getEnumSet());
			isContainInAll &= enumAndFilterPair3.getBetFilter()
					.isContain(bet, enumAndFilterPair3.getEnumSet());
			if (isContainInAll){ 
				betsResults.add(bet);
			}
		}
		return betsResults;
	}

	public List<Bet> getBets() {
		return bets;
	}

	public void setBets(List<Bet> bets) {
		this.bets = bets;
	}




}
